package top.yangguangmc.smart_scheduling.pojo;

import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import java.util.Objects;

/**
 * 封装一个员工数据，其名字和id（工号）不可为空。
 * 两个员工的名字可以相同，但id是唯一的。
 */
@SuppressWarnings("unused")
public class Employee implements Serializable, Comparable<Employee> {
    private int id;
    private String name;

    /**
     * 新建一个员工对象。
     * @param id  工号，要求唯一
     * @param name  名字，不可为空，可以重复
     */
    public Employee(int id, String name) {
        this.id = id;
        setName(name);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(@NotNull String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object object) {
        if (this == object) return true;
        if (object == null || getClass() != object.getClass()) return false;
        Employee employee = (Employee) object;
        return id == employee.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public String toString() {
        return name+" ("+id+")";
    }

    @Override
    public int compareTo(@NotNull Employee o) {
        if (id != o.getId()) {
            return Integer.compare(id, o.getId());
        } else {
            return name.compareTo(o.getName());
        }
    }
}
